/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * pnfSacarXDespacho.java
 *
 * Created on Nov 8, 2011, 9:29:23 PM
 */

package visual.Despacho;

import bentity.beOrdenDespacho;
import bentity.bePallet;
import blogic.blOrdenDespacho;
import blogic.blProducto;
import blogic.blUbicacion;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import visual.Seguridad.visualHelper;
import bentity.beUsuario;
import blogic.blLog;
import blogic.blPallet;
/**
 *
 * @author cesar
 */
public class pnfSacarXDespacho extends javax.swing.JPanel {

    public static String DESPACHO = "Despacho";
    public static int RESERVADO = 37;
    private beUsuario usuario = null;

    /** Creates new form pnfSacarXDespacho */
    public pnfSacarXDespacho(beUsuario usuario) {
        initComponents();
        this.usuario = usuario;
        ConsultarDespacho();

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")

    private void ConsultarDespacho(){
        try {
            blOrdenDespacho orden = new blOrdenDespacho();
            ArrayList<beOrdenDespacho> ordenes = new ArrayList<beOrdenDespacho>();
            ordenes = orden.obtenerOrdenesPorDespachar();
            DefaultTableModel dtm = (DefaultTableModel) this.tblPallets.getModel();
            this.limpiarTabla(dtm);
            if (ordenes.size() == 0) {
                JOptionPane.showMessageDialog(this, "La búsqueda no arrojó resultados.", "Información", JOptionPane.INFORMATION_MESSAGE);
            } else {
               this.llenarTabla(ordenes);
            }

        } catch (Exception ex) {
            Logger.getLogger(pnfSacarXDespacho.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    private void llenarTabla(ArrayList<beOrdenDespacho> ordenes) {
        DefaultTableModel dtm = (DefaultTableModel)this.tblPallets.getModel();
        Object [] datos = new Object [4];

        for(int i=0;i<ordenes.size();i++){
            datos[0] = ordenes.get(i).getIdOrdenDespacho();
            if (ordenes.get(i).getEstadoOrden() == RESERVADO);
            datos [1] = "Reservado";
            datos [2] = ordenes.get(i).getFechaDespacho();
            datos [3] = ordenes.get(i).getOperario();
            dtm.addRow(datos);
        }
        this.tblPallets.setRowSelectionAllowed(true);
        this.tblPallets.setColumnSelectionAllowed(false);
    }

    private void limpiarTabla(DefaultTableModel dtm) {
        int numFilas = dtm.getRowCount();
        for(int i=(numFilas-1);i>=0;i--)
            dtm.removeRow(i);
    }
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane2 = new javax.swing.JScrollPane();
        tblPallets = new javax.swing.JTable();
        btnEliminar = new javax.swing.JButton();
        lblTitulo = new javax.swing.JLabel();
        lblTitulo1 = new javax.swing.JLabel();

        setLayout(null);

        tblPallets.setAutoCreateRowSorter(true);
        tblPallets.setForeground(new java.awt.Color(0, 0, 0));
        tblPallets.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "IdDespacho", "Estado", "Fecha", "Operario"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblPallets.setColumnSelectionAllowed(true);
        tblPallets.setGridColor(javax.swing.UIManager.getDefaults().getColor("TableHeader.background"));
        tblPallets.setMaximumSize(new java.awt.Dimension(800, 72));
        tblPallets.setMinimumSize(new java.awt.Dimension(200, 72));
        tblPallets.setSelectionForeground(new java.awt.Color(0, 0, 0));
        tblPallets.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblPallets.getTableHeader().setReorderingAllowed(false);
        jScrollPane2.setViewportView(tblPallets);
        tblPallets.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        add(jScrollPane2);
        jScrollPane2.setBounds(41, 114, 428, 193);

        btnEliminar.setBackground(new java.awt.Color(240, 235, 226));
        btnEliminar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnEliminar.setForeground(new java.awt.Color(0, 0, 0));
        btnEliminar.setText("Despachar");
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        add(btnEliminar);
        btnEliminar.setBounds(182, 319, 120, 27);

        lblTitulo.setFont(new java.awt.Font("DejaVu Sans", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Salida por orden");
        add(lblTitulo);
        lblTitulo.setBounds(105, 36, 297, 43);

        lblTitulo1.setFont(new java.awt.Font("DejaVu Sans", 0, 14));
        lblTitulo1.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo1.setText("Órdenes a despachar en el almacén");
        add(lblTitulo1);
        lblTitulo1.setBounds(41, 91, 281, 17);
    }// </editor-fold>//GEN-END:initComponents

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        // TODO add your handling code here:
        int rslt = visualHelper.mostrarPreguntaSiNo("¿Está seguro de liberar las ubicaciones correspondientes al despacho seleccionado?");
        if (rslt == JOptionPane.YES_OPTION){
            blUbicacion ubi = new blUbicacion();
            blProducto prod = new blProducto();
            int fila = this.tblPallets.getSelectedRow();
            ArrayList<Integer> estados = new ArrayList<Integer>();
            ArrayList<bePallet> pallets = new ArrayList<bePallet>();

            if (fila == -1)
                JOptionPane.showMessageDialog(this, "Debe seleccionar una orden de despacho.", "Información", JOptionPane.INFORMATION_MESSAGE);
            else{
                try {
                    if (this.tblPallets.getSelectedRowCount() > 1) {
                        visualHelper.mostrarMensajeError("Debe seleccionar una sola fila");
                    }
                    estados = ubi.getTipoEstadoInt();
                    //prod.actualizarStock(Integer.parseInt(this.tblPallets.getValueAt(fila, 0).toString()),DESPACHO);
                    blPallet pallet = new blPallet();
                    //int cantCajas = pallet.obtenerCajas(Integer.parseInt(this.tblPallets.getValueAt(fila, 0).toString()));
                    //p.setId_Pallet(Integer.parseInt(this.tblPallets.getValueAt(fila, 0).toString()));
                    //p.setCantCajas(cantCajas);
                    //pallets.add(p);
                    pallets = pallet.obtenerPalletXOrden2(Integer.parseInt(this.tblPallets.getValueAt(fila, 0).toString()));
                    pallet.actualizarStock(pallets);
                    ubi.actualizarUbiXDespacho(Integer.parseInt(this.tblPallets.getValueAt(fila, 0).toString()), estados.get(3),DESPACHO);
                    visualHelper.mostrarMensajeSatisfaccion("Se liberaron las ubicaciones que se encontraban en la orden de despacho seleccionada");
                    (new blOrdenDespacho()).colocarOrdenDespachoYPedidosDespachado(Integer.parseInt(this.tblPallets.getValueAt(fila, 0).toString()));
                     String codOrden = this.tblPallets.getValueAt(fila, 0).toString();
                    (new blLog()).registrarLog(this.usuario.getIdUsuario(), this.usuario.getCargo(), "Se liberaron todas las ubicaciones correspondientes al orden de despacho con codigo "+ codOrden);
                    ConsultarDespacho();
                } catch (Exception ex) {
                    Logger.getLogger(pnfSacarXIncidente.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

}//GEN-LAST:event_btnEliminarActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnEliminar;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JLabel lblTitulo1;
    private javax.swing.JTable tblPallets;
    // End of variables declaration//GEN-END:variables

}
